home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Snippets / PNL Libraries / Libraries / SpriteWorld / SpriteWorld files / Headers / SpriteFrame.h < prev    next >
Text File  |  1996-11-15  |  5KB  |  176 lines

  1. ///--------------------------------------------------------------------------------------
  2. //    SpriteFrame.h
  3. //
  4. //    Portions are copyright: © 1991-94 Tony Myles, All rights reserved worldwide.
  5. ///--------------------------------------------------------------------------------------
  6.  
  7.  
  8. #ifndef __SPRITEFRAME__
  9. #define __SPRITEFRAME__
  10.  
  11.  
  12. #ifndef __SWCOMMON__
  13. #include "SWCommonHeaders.h"
  14. #endif
  15.  
  16. #ifndef __QDOFFSCREEN__
  17. #include <QDOffscreen.h>
  18. #endif
  19.  
  20. #if PRAGMA_ALIGN_SUPPORTED
  21. #pragma options align=mac68k
  22. #endif
  23.  
  24.  
  25.  
  26. ///--------------------------------------------------------------------------------------
  27. //    frame type definitions
  28. ///--------------------------------------------------------------------------------------
  29.  
  30. typedef struct FrameRec FrameRec;
  31. typedef FrameRec *FramePtr, **FrameHdl;
  32.  
  33.  
  34. ///--------------------------------------------------------------------------------------
  35. //    frame data structure
  36. ///--------------------------------------------------------------------------------------
  37.  
  38. struct FrameRec
  39. {
  40.     GWorldPtr         framePort;        // GWorld for the frame image
  41.     PixMapHandle     framePixHndl;    // handle to pix map (saved for unlocking/locking)
  42.     PixMapPtr         framePix;        // pointer color pix map (valid only while locked)
  43.     
  44.     char*         frameBaseAddr;        // base address of pixel data (valid only while locked)
  45.     unsigned long frameRowBytes;    // number of bytes in a row of the frame
  46.     short         leftAlignFactor;    // used to align the rect.left to the nearest long word 
  47.     short         rightAlignFactor;    // used to align the rect.right to the nearest long word
  48.     Boolean     isFrameLocked;        // has the frame been locked?
  49.  
  50.     Rect         frameRect;            // source image rectangle
  51.     Point         offsetPoint;        // image offset factor relative to destination rectangle
  52.     RgnHandle     maskRgn;            // image masking region
  53.     Boolean        tileMaskIsSolid;     // used by SWDrawTilesAboveSprite
  54.  
  55.     GWorldPtr        maskPort;        // GWorld for the mask image
  56.     PixMapHandle     maskPixHndl;    // handle to pix map (saved for unlocking/locking)
  57.     PixMapPtr         maskPix;        // pointer to color pix map (valid only while locked)
  58.  
  59.     char*             maskBaseAddr;    // base address of mask pixel data (valid only while locked)
  60.     
  61.     Boolean         sharesGWorld;    // shares GWorld with other frames
  62.     
  63.     unsigned short    useCount;        // number of sprites using this frame
  64.  
  65.     unsigned short     numScanLines;
  66.     short            worldRectOffset;  // non-whole-byte offset for 1-bit blitter
  67.     unsigned long*     scanLinePtrArray; // array of pointers to each scanline
  68.     
  69.     PixelCodeHdl     pixCodeH;        // handle to compiled sprite data
  70.     BlitFuncPtr     frameBlitterP;    // procPtr to compiled sprite data
  71. };
  72.  
  73.  
  74. ///--------------------------------------------------------------------------------------
  75. //    frame flags constants
  76. ///--------------------------------------------------------------------------------------
  77.  
  78. typedef enum
  79. {
  80.     kNoMask = 0,
  81.     kPixelMask = 1,
  82.     kRegionMask = 2,
  83.     kFatMask = (kPixelMask + kRegionMask),
  84.     kSolidMask = 4
  85. } MaskType;
  86.  
  87.  
  88. ///--------------------------------------------------------------------------------------
  89. //    frame function prototypes
  90. ///--------------------------------------------------------------------------------------
  91.  
  92. #ifdef __cplusplus
  93. extern "C" {
  94. #endif
  95.  
  96. SW_FUNC OSErr SWCreateWindowFrame(
  97.     FramePtr*     newFrameP, 
  98.     Rect*         frameRect);
  99.  
  100. SW_FUNC OSErr SWCreateFrameFromCicnResource(
  101.     SpriteWorldPtr     destSpriteWorld, 
  102.     FramePtr*         newFrameP, 
  103.     short             iconResID, 
  104.     MaskType         maskType);
  105.  
  106. SW_FUNC OSErr SWCreateFrameFromPictResource(
  107.     SpriteWorldPtr destSpriteWorld,
  108.     FramePtr*         newFrameP, 
  109.     short             pictResID, 
  110.     short             maskResID, 
  111.     MaskType         maskType);
  112.  
  113. SW_FUNC OSErr SWCreateFrameFromGWorldAndRectStart(
  114.     GWorldPtr *tempMaskGWorld,
  115.     int maxWidth,
  116.     int maxHeight);
  117.  
  118. SW_FUNC void SWCreateFrameFromGWorldAndRectFinish(
  119.     GWorldPtr tempMaskGWorld);
  120.  
  121. SW_FUNC OSErr SWCreateFrameFromGWorldAndRectPartial(
  122.     FramePtr* newFrameP,
  123.     GWorldPtr pictGWorld,
  124.     GWorldPtr maskGWorld,
  125.     GWorldPtr tempMaskGWorld,
  126.     Rect* frameRect,
  127.     MaskType maskType);
  128.  
  129. SW_FUNC OSErr SWCreateFrameFromGWorldAndRect(
  130.     FramePtr*     newFrameP, 
  131.     GWorldPtr     pictGWorld, 
  132.     GWorldPtr     maskGWorld, 
  133.     Rect*         frameRect, 
  134.     MaskType     maskType);
  135.  
  136. SW_FUNC OSErr SWCreateFrame(
  137.     GDHandle     theGDH, 
  138.     FramePtr*     newFrameP, 
  139.     Rect* frameRect);
  140.  
  141. SW_FUNC OSErr SWCreateFrameFromDepth(
  142.     FramePtr* newFrameP,
  143.     short depth,
  144.     Rect* frameRect);
  145.  
  146. SW_FUNC OSErr SWCloneFrame(
  147.     FramePtr cloneFrameP,
  148.     FramePtr* newFrameP);
  149.     
  150. SW_FUNC void SWInitializeFrame(
  151.     FramePtr     tempFrameP, 
  152.     short         depth);
  153.  
  154. SW_FUNC Boolean SWDisposeFrame(
  155.     FramePtr oldFrameP);
  156.     
  157. SW_FUNC void SWSetFrameMaskRgn(
  158.     FramePtr     srcFrameP, 
  159.     RgnHandle     maskRgn);
  160.  
  161. SW_FUNC void SWLockFrame(
  162.     FramePtr srcFrameP);
  163.  
  164. SW_FUNC void SWUnlockFrame(
  165.     FramePtr srcFrameP);
  166.  
  167.  
  168. #ifdef __cplusplus
  169. }
  170. #endif
  171.  
  172. #if PRAGMA_ALIGN_SUPPORTED
  173. #pragma options align=reset
  174. #endif
  175.  
  176. #endif    /* __SPRITEFRAME__ */